#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct
{
    ElemType *elem;
    int lenth;
}SStable;
void printfSSt(SStable ST)
{
    int i=0;
    while(i<ST.lenth)
    {
        printf("%3d",ST.elem[i]);
        i++;
    }
    printf("\n");
}
void swap(int &a,int &b)
{
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
}
void Popsort(ElemType *A,int len)
{
    int i,j;
    bool flag;
    for(i=0;i<len-1;i++)
    {
        flag= false;
        for(j=len-1;j>i;j--)
        {
            if (A[j-1]>A[j])
            {
                swap(A[j-1],A[j]);
                flag=true;
            }
        }
        if (false==flag)
        {
            return;
        }
    }
}
int pivotation(ElemType *A,int low ,int high)
{
    ElemType poivt=A[low];
    while(low<high)
    {
        while(low<high&&A[high]>poivt)
            high--;
        A[low]=A[high];
        while(low<high&&A[low]<poivt)
            low++;
        A[high]=A[low];
    }
    A[low]=poivt;
    return low;

}
void Quicksort(ElemType *A,int low,int high)
{
    if(low<high)
    {
        int pivot_pos=pivotation(A,low,high);
        Quicksort(A,low,pivot_pos-1);
        Quicksort(A,pivot_pos+1,high);
    }
}
void Insertsort(ElemType *A,int len)
{
    int i,j,insertVal;
    for(i=1;i<len;i++)
    {
        insertVal=A[i];
        for(j=i-1;j>0&&A[j]>insertVal;j--)
        {
            A[j+1]=A[j];

        }
        A[j+1]=insertVal;
    }


}
int main()
{
    SStable ST;
    int i=0;
    int str[10];
    for (i=0;i<10;i++)
    {
        scanf("%d",&str[i]);
    }
    ST.lenth=10;
    ST.elem=str;
    printfSSt(ST);
    Popsort(ST.elem,10);
    printfSSt(ST);
    Quicksort(ST.elem,0,9);
    printfSSt(ST);
    Insertsort(ST.elem,10);
    printfSSt(ST);
    return 0;
}